The recent technological development in semiconductor devices, has made small and low-cost microprocessors, e.g. single chip processors, an attractive component in control and data acquisition systems. In the early days of computer-controlled control systems a central computer managed all the computations and input/output operations in the system. But the new processors have made it possible and feasible to distribute the computations and input/output operations to smaller local computers (slave units), which are configured and/or monitored from a central computer (master unit). This approach frees the control-related computational effort in the central computer, which can instead be used for e.g. a better user interface. However, in order to obtain a feasible solution efficient and reliable communication between the master unit and the slave unit is required.
The communications between the master unit and the slave unit typically comprise instructions (commands) associated with a set of parameters (data). Typically a computer program is downloaded from the master unit to the slave unit, which--after the download--will run the program. However, it may be required to down load additional information from the master unit to the slave unit while the down-loaded program is executed in the slave unit. Further, in order to obtain a cost efficient solution, single chip processors with a small memory and a very limited number of additional components are preferred. Therefore, it is important that the effort associated with the communications in the slave unit occupies as little memory and processor time as possible. Another and important aspect of the communications is that they have to be reliable. If a command to the slave unit is lost, it can be fatal to the function of the control system in question.
U.S. Pat. No. 5,530,436 discloses a method of communication between a master unit and a slave unit, wherein a control byte comprising an expansion bit is transmitted with a succeeding first address byte. If an additional second address byte is required, then an expansion bit is set and the additional second address byte succeeds the first address byte. This is convenient if it is most likely that only the first address byte is needed. Although this is an efficient coding of addresses, it does not take into account that commands and associated data also need an efficient coding, neither does this coding scheme incorporate a reliability handling procedure.